/**
 * 过滤 如果 是0 补两位 如果非0  去掉最后的0
 * @param {*} value 默认值
 */
export const numberFixed = (value) => {
	if (Number(value) == 0) {
		return "0.00"
	} else {
		return Number(value)
	}
}


/**
 * 补零
 * @param {*} value 默认值
 * @param {*} len 浮点数 数量 
 */
export const zeroFilling = (value, len) => {
	return Number(value).toFixed(len)
}


/**
 * 数组取前x条
 * @param {*} arr 数组
 * @param {*} len 数量 
 */
export const beforeSlice = (arr, len) => {
	if (arr.length > len) {
		return arr.slice(0, len);
	} else {
		return arr
	}
}


/**
 * 隐藏私密字符
 * @param {*} str 字符
 * @param {*} beforeLen 之前的数量 
 * @param {*} afterLen 之后的数量 
 */
export const hidePrivacy = (str, beforeLen = 4, afterLen = 4) => {
	let _hide_len = str.substring(beforeLen, str.length - afterLen).length
	let _hide_str = ""
	for (let i = 0; i < _hide_len; i++) {
		_hide_str += "*"
	}
	return str.substring(0, beforeLen) + _hide_str + str.substring(str.length - afterLen, str.length)
}

/**
 * 保留浮点位数
 * @param {String|Number} v 数值 
 * @param {Number} f 保留的浮点位数 
 */
export const transactionToFixed = (v, f) => {
	return Number(v).toFixed(f);
}


/**
 * 加载外部js
 */
// createScript(src) {
// 	return new Promise((resolve, reject) => {
// 		// 动态引入较大类库避免影响页面展示
// 		const script = document.createElement('script')
// 		// view 层的页面运行在 www 根目录，其相对路径相对于 www 计算
// 		script.src = src
// 		document.head.appendChild(script)
// 		script.onload = () => {
// 			resolve();
// 		}
// 		script.onerror = () => {
// 			reject();
// 		}
// 	})
// }

/**
 * 保留浮点位数
 * @param {String} url 跳转地址路由 
 */
export const auditModal = (url, callback) => {
	uni.showModal({
		title: '提示',
		content: '帐号未实名认证、前去认证',
		success: function(res) {
			if (res.confirm) {
				// console.log('用户点击确定');
				if (url) {
					uni.navigateTo({
						url
					});
				} else {
					callback()
				}
			} else if (res.cancel) {
				// console.log('用户点击取消');
			}
		}
	});
}

/**
 * 是否有上一页
 */
export const hasPreviousPage = () => {
	const pages = getCurrentPages(); //获取当前的页面栈
	const currPage = pages[pages.length - 1] //当前页面
	const prePage = pages[pages.length - 2] //上一页面
	return prePage ? true : false
}

/**
 * 下载
 */
export const download = (filename, filepath) => {
	if (window.plus) { //支持plus
		//判断文件是否已经下载
		plus.io.resolveLocalFileSystemURL(
			'_downloads/' + filename,
			function(entry) { //如果已存在文件，则打开文件
				if (entry.isFile) {
					hui.toast("正在打开文件...");
					plus.runtime.openFile('_downloads/' + filename);
				}
			},
			function() { //如果未下载文件，则下载后打开文件
				var dtask = plus.downloader.createDownload(filepath, {
					filename: '_downloads/' + filename
				}, function(d, status) {
					if (status == 200) {
						plus.runtime.openFile('_downloads/' + filename);
					} else {
						hui.toast("下载失败: " + status);
					}
				});
				dtask.addEventListener("statechanged", function(task, status) {
					if (!dtask) {
						return;
					}
					switch (task.state) {
						case 1:
							hui.toast("开始下载...");
							break;
						case 2:
							hui.toast("正在下载...");
							break;
						case 3: // 已接收到数据
							var progressVal = (task.downloadedSize / task.totalSize) * 100;
							//psb1.progressbar({ progress: progressVal }).show();
							//dstatus[0].innerHTML = task.downloadedSize + '/' + task.totalSize;
							//hui.toast('下载进度：' + (task.downloadedSize + '/' + task.totalSize));
							if (hui('.progress').length > 0) {
								hui('.progress').html(parseInt(progressVal) + '%');
							}
							break;
						case 4:
							dtask = null;
							if (hui('.progress').length > 0) {
								hui('.progress').html('0%');
							}
							hui.toast("正在打开文件...");
							break;
					}
				});
				dtask.start();
			}
		);

	} else { //不支持plus
		window.open(filepath);
	}
}


/**
 * 字符转义
 * 针对xss漏洞
 */
export const htmlEscape = (str) => {
	var escapesMap = {
			'<': '&lt;',
			'>': '&gt;',
			'"': '&quot;',
			"'": '&#039;'
		},
		reUnescapedHtml = new RegExp(/[<>"']/g);
	return (str && reUnescapedHtml.test(str)) ? str.replace(reUnescapedHtml, function(chr) {
		return escapesMap[chr];
	}) : (str || "");
}

/**
 * 字符反转义
 */
export const htmlUnEscape = (str) => {
	var unescapes = {
			'&amp;': '&',
			'&lt;': '<',
			'&gt;': '>',
			'&quot;': '"',
			'&#39;': "'"
		},
		reEscapedHtml = new RegExp(/&(?:amp|lt|gt|quot|#39);/g);
	return (str && reEscapedHtml.test(str)) ? str.replace(reEscapedHtml, function(entity) {
		return unescapes[entity];
	}) : (str || '')
}


/**
 * 缓存
 * @param {Object} type get set remove clear
 * @param {Object} keyName 键名
 * @param {Object} data 储存数据
 */
export const storage = (type, keyName, data) => {
	if (type == "get") {
		return uni.getStorageSync(keyName)
	}
	if (type == "set") {
		uni.setStorageSync(keyName, data)
	}
	if (type == "remove") {
		uni.removeStorageSync(keyName)
	}
	if (type == "clear") {
		uni.clearStorageSync()
	}
}
